package it.probabili.formazioni.vo;

import it.probabili.formazioni.utility.Utils;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class Giornata {
	
	private Map<String,Match> giornataDiCampionato;
	private Map<String,Squadra> lstSquadre = new HashMap<String,Squadra>(0);

	/**
	 * Inserisce la giornata di campionato SQUADRACASA-SQUADRAOSPITE ed il relativo {@link Match} nella mappa giornataDiCampionato (N.B. evita duplicati)
	 * @param partita
	 */
	public void addMatch(Match partita){
		if(Utils.isEmpty(giornataDiCampionato)){
			giornataDiCampionato = new HashMap<String,Match>(0);
		}
		if(!giornataDiCampionato.containsKey(partita.getMatch())){
			giornataDiCampionato.put(partita.getMatch(),partita);
		}
	}

	/**
	 * Estrae {@link Match} relativo al nome della squadra passato (sia casa che trasferta) 
	 * @param nomeSquadra
	 * @return {@link Match} 
	 */
	public Match getMatchBySquadra(String nomeSquadra){
		
		Iterator<String> it = giornataDiCampionato.keySet().iterator();
		String partita = null;
		while(it.hasNext()){
			partita = it.next();
			if(Utils.parseSquadraCasa(partita).equalsIgnoreCase(nomeSquadra) 
			|| Utils.parseSquadraOspite(partita).equalsIgnoreCase(nomeSquadra)){
				break;
			}
		}
		return giornataDiCampionato.get(partita);
		
	}
	
	public Map<String, Match> getGiornataDiCampionato() {
		return giornataDiCampionato;
	}

	public Map<String, Squadra> getLstSquadre() {
		return lstSquadre;
	}

	public void addSquadra(Squadra squadra){
		lstSquadre.put(squadra.getNomeSquadra().toUpperCase(), squadra);
	}
	
	public Squadra getSquadra(String nomeSquadra){
		return lstSquadre.get(nomeSquadra.toUpperCase());
	}
	
	/**
	 * Inserisce l'oggetto {@link Squadra} nel {@link Match} di competenza distinguendo tra squadra di casa e squadra ospite
	 * @param squadra
	 * @param match
	 */
	public void addSquadra(Squadra squadra,Match match){
		if(giornataDiCampionato.containsKey(match.getMatch())){
			if(Utils.parseSquadraCasa(match.getMatch()).equalsIgnoreCase(squadra.getNomeSquadra())){
				giornataDiCampionato.get(match.getMatch()).setSquadraCasa(squadra);	
			}else{
				giornataDiCampionato.get(match.getMatch()).setSquadraOspite(squadra);
			}
			
		}
	}
}
